/*
 * File Name：BaseRequestUtil.java
 * Copyright：Copyright 2008-2015 CiWong.Inc. All Rights Reserved.
 * Description： BaseRequestUtil.java
 * Modify By：bin
 * Modify Date：2015年4月23日
 * Modify Type：Add
 */
package com.ciwong.mobilelib.utils;

import android.content.Context;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;

/**
 * http网络请求基础类
 *
 * @author bin
 * @version ciwong v.1.0 2015年4月23日
 * @since ciwong v.1.0
 */
public class BaseRequestUtil
{
    private static BaseRequestUtil instance;

    private static Context mContext;

    private RequestQueue queue;

    private BaseRequestUtil()
    {
        queue = Volley.newRequestQueue(mContext);
        queue.getCache().clear();
    }

    /**
     * 获取唯一实例
     *
     * @return 返回唯一实例对象
     */
    public static BaseRequestUtil getInstance()
    {
        if (instance == null)
        {
            syncInit();
        }
        return instance;
    }

    /**
     * 实例化对象
     */
    private static synchronized void syncInit()
    {
        if (instance == null)
        {
            instance = new BaseRequestUtil();
        }
    }

    /**
     * 设置上下文对象
     *
     * @param context
     *            上下文对象
     */
    public static void setContext(Context context)
    {
        mContext = context;
    }

    /**
     * 添加网络请求
     *
     * @param request
     *            网络请求
     */
    public void add(Request request)
    {
        add(request, null);
    }

    /**
     * 添加网络请求
     *
     * @param request
     *            网络请求
     * @param tag
     *            网络请求唯一标识(取消网络请求事使用)
     */
    public void add(Request request, Object tag)
    {
        if (tag != null)
        {
            request.setTag(tag);
        }
        queue.add(request);
    }

    /**
     * 取消指定TAG的全部请求
     *
     * @param tag
     *            网络请求唯一标识(取消网络请求事使用)
     */
    public void cancelAll(Object tag)
    {
        if (tag != null)
        {
            queue.cancelAll(tag);
        }
    }

}
